package com.asiainfo_linkage.utils;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

import com.sinovatech.ntf.model.dto.AccessoriesDTO_email;
import com.sinovatech.ntf.send.EmailSend;

@SuppressWarnings("unchecked")
public class MailUtil {

    /**
     * 发送邮件
     * @param inMap：约定Key值为 toEmail主送邮箱,ccEmail抄送邮箱,ppEmail暗送邮箱,
     * subject邮件主题,mailContent邮件内容,mailFilePaths(Map)邮件附件文件路径
     * @return map
     * @throws Exception 
     */
    public static Map<String,Object> sendMail(Map<String,Object> inMap) throws Exception {

        String bizCode = "11007";// 业务类别编码(必填) 11001~11008任选其一
        String bizName = "ECSUDP";// 业务类别名称(必填) 自编
        String taskName = "邮件发送";// 任务名称(必填) 自编

        String toEmail = (String) inMap.get("toEmail"); // 主送邮箱地址(必填)多个邮箱地址用“，”间隔
        String ccEmail = (null == inMap.get("ccEmail") ? "" : (String) inMap.get("ccEmail")); // 抄送邮箱地址（可为空） 多个邮箱地址用“，”间隔
        String ppEmail = (null == inMap.get("ppEmail") ? "" : (String) inMap.get("ppEmail")); // 暗送邮箱地址（可为空） 多个邮箱地址用“，”间隔

        Map<String, AccessoriesDTO_email> filesMap = getFileInfo(inMap);

        String subject = (String) inMap.get("subject"); // 邮件主题（必填）
        String content = (String) inMap.get("mailContent"); // 邮件内容（可为空）

        String retInfo = EmailSend.emailsend(bizCode, bizName, taskName, toEmail, ccEmail, ppEmail, filesMap, content,
                subject);
        
        inMap.put("retInfo", retInfo);
        return inMap;
    }

    /**
     *  获取附件信息
     * @throws Exception              
     */
    private static Map<String, AccessoriesDTO_email> getFileInfo(Map<String,Object> inMap) throws Exception {
        int number = 0;
        // 邮件附件集合（如果无附件可设为null）
        Map<String, AccessoriesDTO_email> fileMap = new TreeMap<String, AccessoriesDTO_email>();// 封装邮件附件对象的map集合

        Map<String, String> filesMap = (Map) inMap.get("mailFilePaths");
        if (null == filesMap || filesMap.size() == 0) {
            return fileMap;
        }
        for (String filePath : filesMap.values()) {

            File file = new File(filePath);
            if (!file.exists()) {
                throw new Exception("File is not exists:" + filePath);
            }

            AccessoriesDTO_email mailFile = new AccessoriesDTO_email(); // 附件对象1
            //mailFile.setLocalpaths(StringUtil.replaceAll(file.getParentFile().getPath(), "\\", "/")); // 附件对象1本地路径
            mailFile.setFilenames(file.getName()); // 附件对象1文件名
            fileMap.put(String.valueOf(++number), mailFile); // 将附件对象放入map集合
        }
        return fileMap;
    }
    
    public static void main(String[] args) throws Exception{
    	Map<String,Object> mailMap = new HashMap<String,Object>();
		mailMap.put("toEmail", "314746782@qq.com");
	    mailMap.put("subject","sfdasfds");
	    mailMap.put("mailContent", "ddddddddddddddddddddddddddddd");
		try {
			MailUtil.sendMail(mailMap);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
}

